在上篇文章栈结构与四则运算中提到了通过算术表达式构造二叉树,比如
是一个标准的算术表达式,也叫中缀表达式。在通过中缀表达式构造二叉树的过程中,计算数要作为叶子节点,运算符作为中间节点,考虑算术优先级。因为正常单从一个中缀表达式是无法获得唯一的一个二叉树结构的。总结来说,中缀表达式构造二叉树有以下几个步骤和要点:
计算数作为叶子节点,运算符作为中间节点。
对算式按照优先级和计算顺序分割,计算数为叶子节点,运算符为中间节点,直到算式对应到二叉树中。
分析过程中,可以用括号辅助分割表达式,依次分析得到左右树节点(算式中一般常见括号,因此用竖线分隔更好些)。
如下对中缀表达式9+(3-1)*3+10/2构造二叉树过程:
根据优先级,分为三个部分9, +, (3-1)*3+10/2,计算数9为左叶子,运算符+为中间节点;
继续分割(3-1)*3+10/2,也是三部分(3-1)*3,+,10/2,+为根节点,左子树为(3-1)*3,右子树为10/2
继续,先拆分左侧(3-1)*3,三部分3-1,*,3,* 中间节点,3右叶子,继续可以拆分3-1;
拆分右侧,对于10/2,拆分为10,/,2,整个转换完成。
最终的树结构如图
表达式二叉树
|